package com.todod.base.framework.common.util.bigdecimal;

import java.math.BigDecimal;

public class BigDecimalUtils {
    // 加法
    public static BigDecimal doubleAdd(BigDecimal v1, BigDecimal v2) {
        return v1.add(v2).setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    // 加法
    public static BigDecimal floatAdd(float v1, float v2) {
        BigDecimal b1 = new BigDecimal(Float.toString(v1));
        BigDecimal b2 = new BigDecimal(Float.toString(v2));
        return b1.add(b2).setScale(2, BigDecimal.ROUND_HALF_UP);
    }
    // 减法
    public static BigDecimal doubleSub(BigDecimal v1, BigDecimal v2) {
        return v1.subtract(v2).setScale(2, BigDecimal.ROUND_HALF_UP);
    }
    // 减法
    public static BigDecimal floatSub(float v1, float v2) {
        BigDecimal b1 = new BigDecimal(Float.toString(v1));
        BigDecimal b2 = new BigDecimal(Float.toString(v2));
        return b1.subtract(b2).setScale(2, BigDecimal.ROUND_HALF_UP);
    }
    // 乘法
    public static BigDecimal doubleMul(BigDecimal v1, BigDecimal v2) {

        BigDecimal num = new BigDecimal(0);
        if (v1.compareTo(new BigDecimal(0)) > 0 || v2.compareTo(new BigDecimal(0)) > 0) {
            num = v1.multiply(v2).setScale(2, BigDecimal.ROUND_HALF_UP);
        }
        return num;
    }
    // 乘法
    public static BigDecimal floatMul(float v1, float v2) {
        BigDecimal b1 = new BigDecimal(Float.toString(v1));
        BigDecimal b2 = new BigDecimal(Float.toString(v2));
        return b1.multiply(b2).setScale(2, BigDecimal.ROUND_HALF_UP);
    }
    // 除法
    public static BigDecimal doubleDiv(BigDecimal v1, BigDecimal v2) {
        // 保留小数点后两位 ROUND_HALF_UP = 四舍五入

        BigDecimal num = new BigDecimal(0);
        if (v1.compareTo(new BigDecimal(0)) > 0 || v2.compareTo(new BigDecimal(0)) > 0) {
            num = v1.divide(v2, 2, BigDecimal.ROUND_HALF_UP);
        }
        return num;
    }
    // 除法
    public static BigDecimal floatDiv(float v1, float v2) {
        BigDecimal b1 = new BigDecimal(Float.toString(v1));
        BigDecimal b2 = new BigDecimal(Float.toString(v2));
        // 保留小数点后两位 ROUND_HALF_UP = 四舍五入
        return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP);
    }

    /**
     * 比较v1 v2大小
     *
     * @param v1
     * @param v2
     * @return v1>v2 return 1 v1=v2 return 0 v1<v2 return -1
     */
    public static int doubleCompareTo(BigDecimal v1, BigDecimal v2) {
        return v1.compareTo(v2);
    }

    public static int floatCompareTo(float v1, float v2) {
        BigDecimal b1 = new BigDecimal(Float.toString(v1));
        BigDecimal b2 = new BigDecimal(Float.toString(v2));
        return b1.compareTo(b2);
    }

    // 判断对应项是否为空，为空置0
    public static BigDecimal isNullable(BigDecimal value) {
        BigDecimal returnValue = BigDecimal.ZERO;
        if (value != null) {
            returnValue = value;
        }
        return returnValue;
    }
}
